/**
 * 角色资源分配业务类
 *author:yhb
 */
package com.towker.frame.service.rbac;

import java.util.List;
import org.springframework.stereotype.Service;

import com.towker.core.db.*;
import com.towker.frame.dao.rbac.ResourceDao;
import com.towker.frame.dao.rbac.RoleResourceDao;
import com.towker.frame.model.rbac.*;
import com.towker.frame.share.ServiceShare;

@Service
public class RoleResourceService extends BaseService<RoleResource, java.lang.Long>
{
	// 角色资源分配的dao。	private RoleResourceDao roleResourceDao;
	private ResourceDao resDao;
	public void setResourceDao(ResourceDao dao){resDao=dao;}
	public void setRoleResourceDao(RoleResourceDao roleResourceDao){this.roleResourceDao = roleResourceDao;}
	@SuppressWarnings("unchecked")
	protected EntityDao getEntityDao(){return  roleResourceDao;}
	/**给角色分配资源*/
	public void assignRoleRes(long sysid,long roleid,String resIds ){
		roleResourceDao.delRoleResourceByRoleid(roleid);
		String[] arr=resIds.split(",");
		if(null==arr||0==arr.length)return;
		for(String tmp:arr){
			RoleResource po=new RoleResource();
			po.setSystemid(sysid);
			po.setRoleid(roleid);
			try{
				po.setResid(new Long(tmp));
				add(po);
				Resource res=(Resource)resDao.getById(po.getResid());
				if(new Long(1).equals(res.getViewandoption())){
					List<Resource> list=resDao.getChildrenResById(res.getId());
					for(Resource tmpRes:list){
						po=new RoleResource();
						po.setSystemid(sysid);
						po.setRoleid(roleid);
						po.setResid(tmpRes.getId());
						add(po);
					}
				}
				
			}catch(Exception e){e.printStackTrace();}
		}
	}
	
	/**
	 * 根据ids批量删除角色资源分配。
	 * */
	public void delByIds(List<Long> list)
	{
		roleResourceDao.delByIds(list);
	}
	
	/**
	 * 根据资源删除角色资源分配记录。
	 */
	public void delByResid(long resid)
	{
		roleResourceDao.delByResid(resid);
	}
	
	/**
	 * 根据角色删除角色的所有资源分配记录
	 */
	public void delByRoleid(long roleid)
	{
		roleResourceDao.delByRoleid(roleid);
	}
	
	/**
	 * 根据系统删除所有的角色资源分配记录。
	 */
	public void delBySysid(long sysid)
	{
		this.roleResourceDao.delBySysid(sysid);
	}
	
	/**
	 * 根据系统与角色删除角色的所有资源分配记录	 */
	public void delBySysidAndRoleid(long sysid, long roleid)
	{
		roleResourceDao.delBySysidAndRoleid(sysid, roleid);
	}

	/**
	 * 获得角色的所有角色资源分配。	 * */
	public List<RoleResource> getRoleResByRoleid(long roleid)
	{
		return roleResourceDao.getRoleResByRoleid(roleid);
	}
	
	public static void main(String[] args)
	{
		RoleResourceService service=(RoleResourceService)ServiceShare.getService(RoleResourceService.class);
		List<RoleResource> list=service.getRoleResByRoleid(1);
		System.out.println(list.size());
	}
}
